﻿using ChromeTabs;
using GalaSoft.MvvmLight.Command;
using JiveMessenger.Utilities;
using JmShared;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows.Input;
using System.Windows.Media;
namespace JiveMessenger.ViewModels
{
    public interface IViewModelMainWindow
    {
        RelayCommand EditFontCommand { get; set; }
        RelayCommand GetEmoticonsCommand { get;  set; }
        RelayCommand<bool> LogoutCommand { get;  set; }
        RelayCommand OpenOptionsCommand { get;  set; }
        RelayCommand ViewLogCommand { get;  set; }
        RelayCommand WindowLoadedCommand { get;  set; }
        RelayCommand<KeyEventArgs> PreviewKeyUpCommand { get;  set; }
        RelayCommand HideMenuCommand { get;  set; }
        RelayCommand OpenContactListWindowCommand { get;  set; }
        RelayCommand<object> ShowHideContactlistCommand { get; set; }
        RelayCommand<ViewModelTab> CloseTabCommand { get; set; }
        RelayCommand<TabReorder> TabsReorderedCommand { get; set; }
        RelayCommand OpenNotificationsWindowCommand { get; set; }
        RelayCommand CloseNotificationsBarCommand { get; set; }
        RelayCommand<ViewModelTab> CloseAllTabsCommand { get; set; }
        RelayCommand<ViewModelTab> PinTabCommand { get; set; }
        RelayCommand StartUpdateCheckCommand { get; set; }
        RelayCommand ShowAboutWindowCommand { get; set; }
        RelayCommand OpenWelcomeTabCommand { get; set; }

        ViewModelTab CurrentActiveViewModel { get; set; }
        ObservableCollection<ViewModelTab> ChatViewModels { get; }
        bool IsChatControlVisible { get; set; }
        bool IsLoginControlVisible { get; set; }
        bool IsMainMenuVisible { get; set; }
        string WindowTitle { get; set; }
        void RestoreTabs();
        void RunOnNetworkConnect();
        void RunOnNetworkDisconnect();
        void Cleanup();
    }
}
